
<!DOCTYPE html>
<html lang class="loading">
<head><meta name="generator" content="Hexo 3.9.0">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>2-FTP和SSH的区别 - Hexo</title>
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="google" content="notranslate">
    <meta name="keywords" content="Fechin,"> 
    <meta name="description" content="FTP和SSH的区别
（1）SSH为建立在应用层和传输层基础上的安全协议，SSH采用面向连接的TCP协议传输 应用22号端口，安全系数较高。

（2）FTP是File Transfer Protoc,"> 
    <meta name="author" content="John Doe"> 
    <link rel="alternative" href="atom.xml" title="Hexo" type="application/atom+xml"> 
    <link rel="icon" href="/hexoboke/img/favicon.png"> 
    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
    <link rel="stylesheet" href="/hexoboke/css/diaspora.css">
    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <script>
         (adsbygoogle = window.adsbygoogle || []).push({
              google_ad_client: "ca-pub-8691406134231910",
              enable_page_level_ads: true
         });
    </script>
    <script async custom-element="amp-auto-ads" src="https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js">
    </script>
</head>
</html>
<body class="loading">
    <span id="config-title" style="display:none">Hexo</span>
    <div id="loader"></div>
    <div id="single">
    <div id="top" style="display: block;">
    <div class="bar" style="width: 0;"></div>
    <a class="icon-home image-icon" href="javascript:;" data-url="https://soulfeel.gitee.io"></a>
    <div title="播放/暂停" class="icon-play"></div>
    <h3 class="subtitle">2-FTP和SSH的区别</h3>
    <div class="social">
        <!--<div class="like-icon">-->
            <!--<a href="javascript:;" class="likeThis active"><span class="icon-like"></span><span class="count">76</span></a>-->
        <!--</div>-->
        <div>
            <div class="share">
                <a title="获取二维码" class="icon-scan" href="javascript:;"></a>
            </div>
            <div id="qr"></div>
        </div>
    </div>
    <div class="scrollbar"></div>
</div>

    <div class="section">
        <div class="article">
    <div class='main'>
        <h1 class="title">2-FTP和SSH的区别</h1>
        <div class="stuff">
            <span>七月 17, 2018</span>
            

        </div>
        <div class="content markdown">
            <h3 id="FTP和SSH的区别"><a href="#FTP和SSH的区别" class="headerlink" title="FTP和SSH的区别"></a><a href>FTP和SSH的区别</a></h3><ul>
<li><p>（1）SSH为建立在应用层和传输层基础上的安全协议，SSH采用面向连接的TCP协议传输 应用22号端口，安全系数较高。</p>
</li>
<li><p>（2）FTP是File Transfer Protocol（文件传输协议）的英文简称，而中文简称为“文传协议”。TCP/IP协议中，FTP占用两个端口，FTP标准命令TCP端口号为21，Port方式数据端口一般为20。虽然FTP在控制连接方面可以通过SSL加密，但是FTP在通过数据端口传输数据时是不加密的。可以使用SSH为FTP数据传输进行加密，即：SFTP。</p>
</li>
</ul>
<blockquote>
<p>SSH除了作为安全协议以外，有时还被作为一种应用，对于开启SSH服务的设备或系统，可能在终端通过SSH客户端软件进行连接，类似于TELNET，甚至还有传输文件的功能。我常用这个连接LINUX服务器和路由。可以用户赤连接SSH服务的软件，我知道的有：SecureCRT、ssh secure shell client、PuTTY</p>
</blockquote>
<ul>
<li><p>SSH 主要由三部分组成：</p>
<ul>
<li><p>（1）传输层协议 [SSH-TRANS]</p>
<ul>
<li>提供了服务器认证，保密性及完整性。此外它有时还提供压缩功能。<code>SSH-TRANS</code> 通常运行在<code>TCP/IP</code>连接上，也可能用于其它可靠数据流上。 <code>SSH-TRANS</code> 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机，并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。</li>
</ul>
</li>
<li><p>（2）用户认证协议<code>[SSH-USERAUTH]</code></p>
<ul>
<li>用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 <code>SSH-TRANS</code>上面。当<code>SSH-USERAUTH</code>开始后，它从低层协议那里接收会话标识符（从第一次密钥交换中的交换哈希H ）。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 <code>SSH-USERAUTH</code>也需要知道低层协议是否提供保密性保护。</li>
</ul>
</li>
<li><p>（3）连接协议 <code>[SSH-CONNECT]</code></p>
<ul>
<li>将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 <code>TCP/IP</code>连接和转发 X11 连接。</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="FTP-文件传输协议-工作原理"><a href="#FTP-文件传输协议-工作原理" class="headerlink" title="FTP(文件传输协议)工作原理"></a><a href>FTP(文件传输协议)工作原理</a></h3><blockquote>
<p>在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放<code>FTP</code>服务器上，然后其他人通过FTP客户端程序来下载所需要的文件。</p>
</blockquote>
<p><strong>1、FTP架构</strong></p>
<ul>
<li>如同其他的很多通讯协议，FTP通讯协议也采用客户机 / 服务器<code>（Client / Server ）</code>架构。用户可以通过各种不同的<code>FTP</code>客户端程序，借助<code>FTP</code>协议，来连接<code>FTP</code>服务器，以上传或者下载文件。</li>
</ul>
<p><strong>2、FTP通讯端口知识</strong></p>
<blockquote>
<p>FTP服务器和客户端要进行文件传输，就需要通过端口来进行。FTP协议需要的端口一般包括两种：</p>
</blockquote>
<ul>
<li><p><strong>控制链路——–<code>TCP端口21</code></strong></p>
<ul>
<li>所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。</li>
</ul>
</li>
<li><p><strong>数据链路——–<code>TCP端口20</code></strong></p>
<ul>
<li>数据链路主要是用来传送数据的，比如客户端上传、下载内容，以及列目录显示的内容等。</li>
</ul>
</li>
</ul>
<p><strong>3、FTP连接的两种方式</strong></p>
<ul>
<li><blockquote>
<p>在数据链路的建立上，<code>FTP  Server</code> 为了适应不同的网络环境，支持两种连接模式：主动模式（Port）和被动模式（Pasv)。其实这两种连接模式主要是针对数据链路进行的，和控制链路无关。</p>
</blockquote>
</li>
<li><p><strong>主动模式</strong></p>
<ul>
<li><p>主动模式是这样工作的：客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Is或get都是通过这条链路传送的。</p>
</li>
<li><p>当客户端需要服务器端给它传送数据时，客户端会发消息给服务器端，告诉自己的位置和打开的高位端口（一般大于1024的端口都就叫高位端口），等候服务器 的20端口和客户端打开的端口进行连接，从而进行数据的传输。当服务器端收到信息后，就会和客户端打开的端口连接，这样数据链路就建立起来了。</p>
</li>
<li><p>采用主动模式连接服务器的客户端，当它位于NAT或者防火墙的保护之后时会碰到连接失败的问题。这是因为当防火墙接到服务器发送过来的信息的时候，并不知道应该发送给内部网络中的哪一台客户端造成的。</p>
</li>
</ul>
</li>
<li><p><strong>被动模式</strong></p>
<ul>
<li>被动模式是这样工作的：当客户端发送数据请求后，服务器也会发信息给客户端，告诉客户端：服务器在本地打开了一个高位端口P，你现在来连接我吧。当客户端收到该信息时，就会去连接服务器端的端口P，连接成功后，数据链路就建立了。</li>
</ul>
</li>
</ul>
<blockquote>
<p>从上面的解释中我们可以看到，两种模式主要的不同是数据连接建立的不同。对于Port模式，是客户端在本地打开一个端口等服务器去连接建立数据连接，而Pasv模式就是服务器打开一个端口等待客户端去建立一个数据连接。</p>
</blockquote>
<h3 id="浅析文件传输协议-ftp-的工作原理"><a href="#浅析文件传输协议-ftp-的工作原理" class="headerlink" title="浅析文件传输协议 (ftp) 的工作原理"></a><a href>浅析文件传输协议 (ftp) 的工作原理</a></h3><blockquote>
<p>起初，FTP并不是应用于IP网络上的协议，而是ARPANEt网络中计算机间的文件传输协议， ARPANET是美国国防部组建的老网络，于1960-1980年使用。在那时， FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性，即使在今天，它还允许文件远程存取。这使得用户可以在某个系统上工作，而将 文件存贮在别的系统。例如，如果某用户运行Web服务器，需要从远程主机上取得HTML文件和CGI程序在本机上工作，他需要从远程存储站点获取文件(远 程站点也需安装Web服务器)。当用户完成工作后，可使用FTP将文件传回到Web服务器。采用这种方法，用户无需使用Telnet登录到远程主机进行工 作，这样就使Web服务器的更新工作变得如此的轻松。</p>
</blockquote>
<ul>
<li>FTP是TCP/IP的一种具体应用，它工作在OSI模型的第七层，TCP模型的第四层上，即应用层，使用TCP传输而不是UDP，这样FTP客户在和服 务器建立连接前就要经过一个被广为熟知的”三次握手”的过程，它带来的意义在于客户与服务器之间的连接是可靠的，而且是面向连接，为数据的传输提供了可靠 的保证。</li>
</ul>
<blockquote>
<p>下面，让我们来看看，一个FTP客户在和服务器连接是怎么样的一个过程（以标准的FTP端口号为例）。</p>
</blockquote>
<ul>
<li>首先，FTP并不像HTTP协议那样，只需要一个端口作为连接<code>（HTTP的默认端口是80，FTP的默认端口是21）</code>，FTP需要2个端口，一个端口是作 为控制连接端口,也就是21这个端口，用于发送指令给服务器以及等待服务器响应；另一个端口是数据传输端口,端口号为20<code>（仅PORT模式）</code>，是用来建立 数据传输通道的，主要有3个作用 </li>
</ul>
<blockquote>
<p>从客户向服务器发送一个文件。 </p>
<p>从服务器向客户发送一个文件。 </p>
<p>从服务器向客户发送文件或目录列表。 </p>
</blockquote>
<ul>
<li>其次，FTP的连接模式有两种，PORT和PASV。PORT模式是一个主动模式，PASV是被动模式，这里都是相对于服务器而言的。</li>
</ul>
<h3 id="sftp协议"><a href="#sftp协议" class="headerlink" title="sftp协议"></a><a href>sftp协议</a></h3><ul>
<li><code>sftp</code>是<code>SSH File Transfer Protocol</code>的缩写，安全<a href>文件传送协议</a>。可以为传输文件提供一种安全的网络的加密方法。<code>sftp</code> 与 <code>ftp</code> 有着几乎一样的语法和功能。<code>SFTP</code> 为 <a href>SSH</a>的其中一部分，是一种传输档案至 <code>Blogger</code>伺服器的安全方式。其实在<code>SSH</code>软件包中，已经包含了一个叫作<code>SFTP(Secure File Transfer Protocol)</code>的安全文件信息传输子系统，<code>SFTP</code>本身没有单独的<a href>守护进程</a>，它必须使用<code>sshd</code>守护进程（<a href>端口</a>号默认是<code>22</code>）来完成相应的连接和答复操作，所以从某种意义上来说，<code>SFTP</code>并不像一个<a href>服务器</a>程序，而更像是一个客户端程序。<code>SFTP</code>同样是使用加密传输认证信息和传输的数据，所以，使用<code>SFTP</code>是非常安全的。但是，由于这种传输方式使用了加密/<a href>解密技术</a>，所以<a href>传输效率</a>比普通的<a href>FTP</a>要低得多。</li>
</ul>

            <!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->
            <audio id="audio" loop="1" preload="auto" controls="controls" data-autoplay="false">
                <source type="audio/mpeg" src="">
            </audio>
            
                <ul id="audio-list" style="display:none">
                    
                        <li title='0' data-url='http://link.hhtjim.com/163/5146554.mp3'></li>
                    
                        <li title='1' data-url='http://link.hhtjim.com/qq/001faIUs4M2zna.mp3'></li>
                    
                </ul>
            
        </div>
        
    <div id='gitalk-container' class="comment link"
        data-ae='false'
        data-ci=''
        data-cs=''
        data-r=''
        data-o=''
        data-a=''
        data-d='false'
    >查看评论</div>


    </div>
    
</div>


    </div>
</div>
</body>
<script src="//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<script src="//lib.baomitu.com/jquery/1.8.3/jquery.min.js"></script>
<script src="/hexoboke/js/plugin.js"></script>
<script src="/hexoboke/js/diaspora.js"></script>
<link rel="stylesheet" href="/hexoboke/photoswipe/photoswipe.css">
<link rel="stylesheet" href="/hexoboke/photoswipe/default-skin/default-skin.css">
<script src="/hexoboke/photoswipe/photoswipe.min.js"></script>
<script src="/hexoboke/photoswipe/photoswipe-ui-default.min.js"></script>

<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>
    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">
        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>
        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">
            <div class="pswp__top-bar">
                <!--  Controls are self-explanatory. Order can be changed. -->
                <div class="pswp__counter"></div>
                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
                <button class="pswp__button pswp__button--share" title="Share"></button>
                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                      <div class="pswp__preloader__cut">
                        <div class="pswp__preloader__donut"></div>
                      </div>
                    </div>
                </div>
            </div>
            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div> 
            </div>
            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>
            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>
            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>
        </div>
    </div>
</div>




</html>
